/**
 * Copyright (c) 2016-2019 九点科技 All rights reserved.
 *
 * http://www.9dyun.cn
 *
 * 版权所有，侵权必究！
 */
package com.dian.modules.sale.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.dian.common.validator.group.AddGroup;
import com.dian.common.validator.group.UpdateGroup;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.dian.common.entity.BaseEntity;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
/**
 * 销售订单表
 *
 * @author xiaolai
 * @email xiaolai@9dyun.cn
 * @date 2019-06-18 16:59:32
 */
@Data
@TableName("sale_order_head")
public class OrderHeadEntity extends BaseEntity {
	private static final long serialVersionUID = 1L;

    /**
	 * 订单编码
	 */
    @NotBlank(message="订单编码不能为空",  groups ={AddGroup.class, UpdateGroup.class})
    @Length(max=20,  groups ={AddGroup.class, UpdateGroup.class}, message="订单编码长度不能超过20个字符")
    private String orderNo;
    /**
	 * 订单日期;format:yyyy-MM-dd
	 */
    @JsonFormat( pattern="yyyy-MM-dd")
    @NotNull(message="订单日期不能为空",groups = {AddGroup.class,UpdateGroup.class})
    private Date orderDate;

    /**
     * 订单月份;format:yyyy-mm
     */
    @JsonFormat(pattern="yyyy-MM")
    @NotBlank(message="订单月份不能为空",groups = {AddGroup.class,UpdateGroup.class})
    private String orderMonth;


    /**
	 * 门店id;来源于base_store.id
	 */
    @NotNull(message="门店id不能为空",groups = {AddGroup.class,UpdateGroup.class})
    private Long storeId;
    /**
	 * 门店id;来源于base_store.customer_name
	 */
    @NotBlank(message="门店id不能为空",  groups ={AddGroup.class, UpdateGroup.class})
    @Length(max=60,  groups ={AddGroup.class, UpdateGroup.class}, message="门店id长度不能超过60个字符")
    private String storeName;
    /**
	 * 客户ID;来源于base_customer.id
	 */
    @NotNull(message="客户ID不能为空",groups = {AddGroup.class,UpdateGroup.class})
    private Long customerId;
    /**
	 * 客户编码;来源于base_customer.customer_code
	 */
    @NotBlank(message="客户编码不能为空",  groups ={AddGroup.class, UpdateGroup.class})
    @Length(max=20,  groups ={AddGroup.class, UpdateGroup.class}, message="客户编码长度不能超过20个字符")
    private String customerCode;
    /**
	 * 客户名称;来源于base_customer.customer_name
	 */
    @NotBlank(message="客户名称不能为空",  groups ={AddGroup.class, UpdateGroup.class})
    @Length(max=40,  groups ={AddGroup.class, UpdateGroup.class}, message="客户名称长度不能超过40个字符")
    private String customerName;
    /**
	 * 客户联系人;来源于base_customer.customer_contact_name
	 */
    @NotBlank(message="客户联系人不能为空",  groups ={AddGroup.class, UpdateGroup.class})
    @Length(max=40,  groups ={AddGroup.class, UpdateGroup.class}, message="客户联系人长度不能超过40个字符")
    private String customerContactName;
    /**
	 * 客户电话;来源于base_customer.customer_tel
	 */
    @NotBlank(message="客户电话不能为空",  groups ={AddGroup.class, UpdateGroup.class})
    @Length(max=40,  groups ={AddGroup.class, UpdateGroup.class}, message="客户电话长度不能超过40个字符")
    private String customerContactTel;
    /**
	 * 送货地址;来源于base_customer.customer_add
	 */
    @NotBlank(message="送货地址不能为空",  groups ={AddGroup.class, UpdateGroup.class})
    @Length(max=40,  groups ={AddGroup.class, UpdateGroup.class}, message="送货地址长度不能超过40个字符")
    private String customerContactAdd;
    /**
	 * 导购员Id;来源于sys_user.id
	 */
    @NotNull(message="导购员Id不能为空",groups = {AddGroup.class,UpdateGroup.class})
    private Long guideId;
    /**
	 * 导购员名称;来源于sys_user.user_name
	 */
    @NotBlank(message="导购员名称不能为空",  groups ={AddGroup.class, UpdateGroup.class})
    @Length(max=40,  groups ={AddGroup.class, UpdateGroup.class}, message="导购员名称长度不能超过40个字符")
    private String guideName;
    /**
     * 预销售订单id;来源于sale_prob_head.id
     */
    @NotNull(message="预销售订单id不能为空",groups = {AddGroup.class,UpdateGroup.class})
    private Long probId;



    /**
     * 预订单编码;来源于sale_prob_head.prob_no
     */
    @NotBlank(message="预订单编码不能为空",  groups ={AddGroup.class, UpdateGroup.class})
    @Length(max=20,  groups ={AddGroup.class, UpdateGroup.class}, message="预订单编码长度不能超过20个字符")
    private String probNo;
    /**
	 * 订单状态:1-未审核-WAITCHECK;2-已审核-AUDITED-;99-已作废-INVALID
	 */
    @NotNull(message="订单状态不能为空",groups = {AddGroup.class,UpdateGroup.class})
    private Integer orderState;
    /**
	 * 审核人ID
	 */
    private Long checkUserId;
    /**
	 * 审核人
	 */
    private String checkUserName;
    /**
	 * 审核时间;format:yyyy-MM-dd HH:mm:ss
	 */
    @JsonFormat( pattern="yyyy-MM-dd HH:mm:ss")
    private Date checkDate;
    /**
	 * 订单类型:1-产品-PRODUCT;2-辅料-ACCES
	 */
    @NotNull(message="订单类型不能为空",groups = {AddGroup.class,UpdateGroup.class})
    private Integer orderType;
    /**
	 * 安装日期;format:yyyy-MM-dd
	 */
    @JsonFormat( pattern="yyyy-MM-dd")
    private Date installDate;
    /**
	 * 安装标记:1-未安装-NO;2-已安装-YES
	 */
    private Integer installFlag;
    /**
	 * 量尺标记:1-未量尺-NO;2-已量尺-YES
	 */
    private Integer rulerFlag;
    /**
     * 销售订单明细表
     */
    @TableField(exist = false)
    private List<OrderLineEntity> orderLineEntityList;
}
